#include "mypushbutton.h"
#include <QDebug>
#include <QPropertyAnimation>//动画对象头文件

MyPushButton::MyPushButton(QString normalImg,QString pressImg)//设置参数1，正常显示图片路径；参数2，按下按钮后切换图片
{
    this->normalPath=normalImg;
    this->pressPath=pressImg;

    QPixmap pix;
    bool ret= pix.load(this->normalPath);
    if(!ret) {
        QString str=QString("图标加载失败，失败的路径是：%1！").arg(this->normalPath);
        qDebug()<<str;
    }//创建QPixmap对象；

    this->setFixedSize(pix.width(),pix.height());//设置按钮固定尺寸
    this->setStyleSheet("QPushButton{border:Opx;}");//设置不规则样式
    this->setIcon(pix);//设置图标
    this->setIconSize(QSize(pix.width(),pix.height()));//设置图标尺寸

}

//向下跳跃
void MyPushButton::zoom1()
{
    QPropertyAnimation * animation = new QPropertyAnimation(this,"geometry");//创建动画对象this
    animation->setDuration(200);//设置动画间隔
    animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));//设置起始位置
    animation->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height()));//设置结束位置
    animation->setEasingCurve(QEasingCurve::OutBounce);//设置动画曲线，easingcurve，找枚举值
    //执行动画
    animation->start(QAbstractAnimation::DeleteWhenStopped);//等价于delete新建new，除此之外还有keepwhenstopped
}
//向上跳跃
void MyPushButton::zoom2()
{
    QPropertyAnimation * animation = new QPropertyAnimation(this,"geometry");//创建动画对象this
    animation->setDuration(200);//设置动画间隔
    animation->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height()));//设置起始位置
    animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));//设置结束位置
    animation->setEasingCurve(QEasingCurve::OutBounce);//设置动画曲线，easingcurve，找枚举值
    //执行动画
    animation->start(QAbstractAnimation::DeleteWhenStopped);//等价于delete新建new，除此之外还有keepwhenstopped
}

void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    if(this->pressPath !="")//按下的路径不为空，说明要求换图片
    {
        QPixmap pix;
        bool ret= pix.load(this->pressPath);
        if(!ret) {
            QString str=QString("图标加载失败，失败的路径是：%1！").arg(this->pressPath);
            qDebug()<<str;
        }//创建QPixmap对象；

        this->setFixedSize(pix.width(),pix.height());//设置按钮固定尺寸
        this->setStyleSheet("QPushButton{border:Opx;}");//设置不规则样式
        this->setIcon(pix);//设置图标
        this->setIconSize(QSize(pix.width(),pix.height()));//设置图标尺寸

    }
    //其他事情交给父类处理
    QPushButton::mousePressEvent(e);
}

void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if(this->pressPath !="")//按下的路径不为空，说明要求还原图片
    {
        QPixmap pix;
        bool ret= pix.load(this->normalPath);
        if(!ret) {
            QString str=QString("图标加载失败，失败的路径是：%1！").arg(this->normalPath);
            qDebug()<<str;
        }//创建QPixmap对象；

        this->setFixedSize(pix.width(),pix.height());//设置按钮固定尺寸
        this->setStyleSheet("QPushButton{border:Opx;}");//设置不规则样式
        this->setIcon(pix);//设置图标
        this->setIconSize(QSize(pix.width(),pix.height()));//设置图标尺寸

    }
    //其他事情交给父类处理
    QPushButton::mouseReleaseEvent(e);
}
